import com.demo.entity.*;
import com.demo.utlis.MyUtils;

import java.util.*;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {


    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
        test4_1();
    }

    /*
    * 1、有一家超市，出售苹果和草莓。其中苹果 8 元/斤，草莓 13 元/斤。
现在顾客 A 在超市购买了若干斤苹果和草莓，需要计算一共多少钱？
请编写函数，对于 A 购买的水果斤数 (水果斤数为大于等于 0 的整数)，计算并返回所购买商品的总价。
    * */
    public static void test1(){
        //初始化超市数据
        //创建商品列表
        List<Fruits> shopList = new ArrayList<Fruits>();
        //上架商品
        Fruits apples = new Apples();
        Fruits strawberries = new Strawberries();
        shopList.add(apples);
        shopList.add(strawberries);

        //创建顾客对象
        Customer customer = new Customer();
        customer.setName("A");
        //获取顾客购物车
        Map<Fruits,Integer> shopCar = customer.getShopCar();

        Scanner input = new Scanner(System.in);
        for (Fruits fruits : shopList) {
            System.out.print("请输入需要购买"+fruits.getName()+"的斤数：");
            int num = input.nextInt();
            if (num < 0) {
                System.err.println("输入有误，参数不能为负数");
                System.exit(1);
            }
            shopCar.put(fruits, num);
        }
        System.out.println("购买商品的总价格为:"+MyUtils.getTotal(shopCar));


    }

    /*
    * 2、超市增加了一种水果芒果，其定价为 20 元/斤。
现在顾客 B 在超市购买了若干斤苹果、 草莓和芒果，需计算一共需要多少钱？
请编写函数，对于 B 购买的水果斤数 (水果斤数为大于等于 0 的整数)，计算并返回所购买商品的总价。
    * */
    public static void test2(){
        //初始化超市数据
        //创建商品列表
        List<Fruits> shopList = new ArrayList<Fruits>();
        //上架商品
        Fruits apples = new Apples();
        Fruits strawberries = new Strawberries();
        Fruits mangoes = new Mangoes();
        shopList.add(apples);
        shopList.add(strawberries);
        shopList.add(mangoes);

        //创建顾客对象
        Customer customer = new Customer();
        customer.setName("B");
        //获取顾客购物车
        Map<Fruits,Integer> shopCar = customer.getShopCar();

        Scanner input = new Scanner(System.in);
        for (Fruits fruits : shopList) {
            System.out.print("请输入需要购买"+fruits.getName()+"的斤数：");
            int num = input.nextInt();
            if (num < 0) {
                System.err.println("输入有误，参数不能为负数");
                System.exit(1);
            }
            shopCar.put(fruits, num);
        }
        System.out.println("购买商品的总价格为:"+MyUtils.getTotal(shopCar));
    }

    /*
    * 3、超市做促销活动，草莓限时打 8 折。
现在顾客 C 在超市购买了若干斤苹果、 草莓和芒果，需计算一共需要多少钱？
请编写函数，对于 C 购买的水果斤数 (水果斤数为大于等于 0 的整数)，计算并返回所购买商品的总价。
    * */
    public static void test3(){
//初始化超市数据
        //创建商品列表
        List<Fruits> shopList = new ArrayList<Fruits>();
        //上架商品
        Fruits apples = new Apples();
        Fruits strawberries = new Strawberries("草莓", 13, 0.8);
        Fruits mangoes = new Mangoes();
        shopList.add(apples);
        shopList.add(strawberries);
        shopList.add(mangoes);

        //创建顾客对象
        Customer customer = new Customer();
        customer.setName("C");
        //获取顾客购物车
        Map<Fruits,Integer> shopCar = customer.getShopCar();

        Scanner input = new Scanner(System.in);
        for (Fruits fruits : shopList) {
            System.out.print("请输入需要购买"+fruits.getName()+"的斤数：");
            int num = input.nextInt();
            if (num < 0) {
                System.err.println("输入有误，参数不能为负数");
                System.exit(1);
            }
            shopCar.put(fruits, num);
        }
        System.out.println("购买商品的总价格为:"+MyUtils.getTotal(shopCar));
    }

    /*
    * 4、促销活动效果明显，超市继续加大促销力度，购物满 100 减 10 块。
现在顾客 D 在超市购买了若干斤苹果、 草莓和芒果，需计算一共需要多少钱？
请编写函数，对于 D 购买的水果斤数 (水果斤数为大于等于 0 的整数)，计算并返回所购买商品的总价。
    * */
    public static void test4_1(){
        //初始化超市数据
        //创建商品列表
        List<Fruits> shopList = new ArrayList<Fruits>();
        //上架商品
        Fruits apples = new Apples();
        Fruits strawberries = new Strawberries("草莓", 13, 0.8);
        Fruits mangoes = new Mangoes();
        shopList.add(apples);
        shopList.add(strawberries);
        shopList.add(mangoes);

        //创建顾客对象
        Customer customer = new Customer();
        customer.setName("D");
        //获取顾客购物车
        Map<Fruits,Integer> shopCar = customer.getShopCar();

        Scanner input = new Scanner(System.in);
        for (Fruits fruits : shopList) {
            System.out.print("请输入需要购买"+fruits.getName()+"的斤数：");
            int num = input.nextInt();
            if (num < 0) {
                System.err.println("输入有误，参数不能为负数");
                System.exit(1);
            }
            shopCar.put(fruits, num);
        }
        double total = MyUtils.getTotal(shopCar);
        if (total >= 100) {
            total -= 10;
        }
        System.out.println("购买商品的总价格为:"+total);
    }

}